home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 26 / AACD 26.iso / AACD / System / XFD / Developer / Sources / ASM / 4Vx.a < prev    next >
Encoding:
Text File  |  2001-09-16  |  3.1 KB  |  175 lines

  1. *******************************************************
  2. **      XFD external decruncher for CP Cruncher      **
  3. **        written by Mr. Larmer / Wanted Team        **
  4. **  fixed by Georg Hörmannn in 1998 and SDI in 1999  **
  5. *******************************************************
  6.  
  7.         INCLUDE    "AINCLUDE:IncDirs.i"
  8.         INCLUDE    "libraries/xfdmaster.i"
  9.         INCLUDE "lvo/exec_lib.i"
  10.  
  11.         * head function for tests
  12. *        INCLUDE    "xfdExeHead.a"
  13.  
  14. ; xfdForeman structure MUST be first thing in all external decrunchers
  15.  
  16. ForeMan        moveq    #-1,d0        ;security
  17.         rts
  18.         dc.l    XFDF_ID        ;id
  19.         dc.w    1        ;version
  20.         dc.w    0
  21.         dc.l    0,0        ;private
  22.         dc.l    S_4Vx        ;first slave
  23.  
  24. S_4Vx        DC.L    0
  25.         DC.W    2
  26.         DC.W    36
  27.         DC.L    N_4Vx
  28.         DC.W    XFDPFF_DATA
  29.         DC.W    0
  30.         DC.L    RB_4Vx
  31.         DC.L    DB_4Vx
  32.         DC.L    0
  33.         DC.L    0
  34.         DC.W    0,0
  35.         DC.L    12
  36.  
  37.         DC.B    '$VER: 4Vx 1.2 (15.07.2001) by Psygore',0
  38. N_4Vx        DC.B    '(.4Vx) Cruncher',0
  39.  
  40.         EVEN
  41.  
  42. RB_4Vx        MOVEQ    #0,D0
  43.         TST.L    4(A0)        * AmigaMail files
  44.         BEQ.B    .end
  45.         CMPI.L    #$12345678,(A0)
  46.         BNE.B    .end
  47.         MOVEQ    #1,D0
  48. .end        RTS    
  49.  
  50. DB_4Vx        MOVEM.L    D1-D7/A1-A6,-(A7)
  51.         MOVEA.L    A0,A5
  52.         MOVEA.L    xfdbi_SourceBuffer(A5),A0
  53.         ADDA.L    xfdbi_SourceBufLen(A5),A0
  54.         MOVE.L    -4(A0),D0
  55.         MOVE.L    D0,xfdbi_TargetBufSaveLen(A5)
  56.         MOVE.L    D0,xfdbi_TargetBufLen(A5)
  57.         MOVEA.L    xfdm_ExecBase(A6),A6
  58.         MOVE.L    xfdbi_TargetBufMemType(A5),D1
  59.         JSR    _LVOAllocMem(A6)
  60.         MOVE.W    #XFDERR_NOMEMORY,xfdbi_Error(A5)
  61.         MOVE.L    D0,xfdbi_TargetBuffer(A5)
  62.         BEQ.B    .err
  63.         MOVEA.L    xfdbi_SourceBuffer(A5),A0
  64.         MOVEA.L    D0,A1
  65.         MOVE.L    xfdbi_SourceBufLen(A5),D0
  66.         BSR.B    D_4Vx
  67.         CLR.W    xfdbi_Error(A5)
  68.         MOVEQ    #1,D0
  69. .err        MOVEM.L    (A7)+,D1-D7/A1-A6
  70.         RTS    
  71.  
  72. D_4Vx        ADDA.L    D0,A0
  73.         MOVEA.L    -(A0),A2
  74.         ADDA.L    A1,A2
  75.         SUBQ.L    #4,A0
  76.         MOVE.L    -(A0),D0
  77. L_100        MOVEQ    #2,D1
  78.         BSR.W    L_1D4
  79.         TST.W    D2
  80.         BEQ.B    L_14C
  81.         CMPI.W    #7,D2
  82.         BNE.B    L_134
  83.         LSR.L    #1,D0
  84.         BNE.B    L_118
  85.         BSR.W    L_1CE
  86. L_118        BCC.B    L_12C
  87.         MOVEQ    #9,D1
  88.         BSR.W    L_1D4
  89.         TST.W    D2
  90.         BNE.B    L_134
  91.         MOVEQ    #$0011,D1
  92.         BSR.W    L_1D4
  93.         BRA.B    L_134
  94. L_12C        MOVEQ    #3,D1
  95.         BSR.W    L_1D4
  96.         ADDQ.W    #7,D2
  97. L_134        SUBQ.W    #1,D2
  98. L_136        MOVEQ    #7,D1
  99. L_138        LSR.L    #1,D0
  100.         BNE.B    L_140
  101.         MOVE.L    -(A0),D0
  102.         ROXR.L    #1,D0
  103. L_140        ADDX    D3,D3
  104.         DBRA    D1,L_138
  105.         MOVE.B    D3,-(A2)
  106.         DBRA    D2,L_136
  107. L_14C        CMPA.L    A2,A1
  108.         BGE.B    L_1CC
  109.         MOVEQ    #1,D1
  110.         BSR.W    L_1D4
  111.         MOVEQ    #2,D3
  112.         MOVEQ    #7,D1
  113.         TST.W    D2
  114.         BEQ.B    L_1BA
  115.         MOVEQ    #4,D3
  116.         CMPI.W    #2,D2
  117.         BEQ.B    L_1A4
  118.         MOVEQ    #3,D3
  119.         CMPI.W    #1,D2
  120.         BEQ.B    L_196
  121.         MOVEQ    #1,D1
  122.         BSR.B    L_1D4
  123.         CMPI.W    #3,D2
  124.         BEQ.B    L_18E
  125.         CMPI.W    #2,D2
  126.         BEQ.B    L_184
  127.         ADDQ.W    #5,D2
  128.         MOVE.W    D2,D3
  129.         BRA.B    L_1A4
  130. L_184        MOVEQ    #1,D1
  131.         BSR.B    L_1D4
  132.         ADDQ.W    #7,D2
  133.         MOVE.W    D2,D3
  134.         BRA.B    L_1A4
  135. L_18E        MOVEQ    #7,D1
  136.         BSR.B    L_1D4
  137.         MOVE.W    D2,D3
  138.         BRA.B    L_1A4
  139. L_196        MOVEQ    #7,D1
  140.         LSR.L    #1,D0
  141.         BNE.B    L_19E
  142.         BSR.B    L_1CE
  143. L_19E        BCS.B    L_1BA
  144.         MOVEQ    #$000D,D1
  145.         BRA.B    L_1BA
  146. L_1A4        MOVEQ    #$000F,D1
  147.         LSR.L    #1,D0
  148.         BNE.B    L_1AC
  149.         BSR.B    L_1CE
  150. L_1AC        BCC.B    L_1BA
  151.         MOVEQ    #7,D1
  152.         LSR.L    #1,D0
  153.         BNE.B    L_1B6
  154.         BSR.B    L_1CE
  155. L_1B6        BCS.B    L_1BA
  156.         MOVEQ    #$000B,D1
  157. L_1BA        BSR.B    L_1D4
  158.         SUBQ.W    #1,D3
  159. L_1BE        MOVE.B    -1(A2,D2.L),-(A2)
  160.         DBRA    D3,L_1BE
  161.         CMPA.L    A2,A1
  162.         BLT.W    L_100
  163. L_1CC        RTS    
  164. L_1CE        MOVE.L    -(A0),D0
  165.         ROXR.L    #1,D0
  166.         RTS    
  167. L_1D4        MOVEQ    #0,D2
  168. L_1D6        LSR.L    #1,D0
  169.         BNE.B    L_1DE
  170.         MOVE.L    -(A0),D0
  171.         ROXR.L    #1,D0
  172. L_1DE        ADDX    D2,D2
  173.         DBRA    D1,L_1D6
  174.         RTS
  175.